// acwing338. 计数问题
// 统计某一个区间中 某一个数出现的次数
#include<bits/stdc++.h>
using namespace std;
using LL = long long;

// 获取前面一些位组成的数字是多少
LL get(vector<LL>& num, LL l, LL r)
{
    LL res = 0;
    for (LL i = l; i >= r; i -- ) 
        res = res * 10 + num[i];
    return res;
}

LL power10(LL x) 
{
    LL res = 1;
    while (x -- ) 
    {
        res *= 10;
    }
    return res;
}

// 统计某一个数n中x的数量
LL count(LL n, LL x) 
{
    if (!n) return 0;
    // n = 1234567
    // num = 7 6 5 4 3 2 1
    vector<LL> num; 
    while (n)
    {
        num.push_back(n % 10);
        n /= 10;
    }
    // n = 5
    n = num.size();
    
    LL res = 0;
    // 从前往后遍历（高位到低位）
    for (LL i = n - 1 - !x; i >= 0; i -- )
    {   
        // 7 6 5 4 3 2 1 i = 3，n = 7
        // 0 1 2 3 4 5 6
        // i 对应的非最高位 才会存在 1 <= xxx1yyy <= abcdefg xxx = 000~abc - 1
        if (i < n - 1)
        {
            // 用get 获取到 abc的值 * 10 ^ i
            res += get(num, n - 1, i + 1) * power10(i);
            if (!x) res -= power10(i); // 如果x == 0的话 需要从001开始到abc - 1所以需要减去一个 10 ^ i
        }
        // d = x, yyy = 000 ~ efg, efg + 1
        // d > x, yyy = 000 ~ 999, 1000
        if(num[i] == x) res += get(num, i - 1, 0) + 1;
        else if (num[i] > x) res += power10(i);
    }
    return res;
}

int main()
{   
    freopen("input.txt", "r", stdin);
    LL a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
        
    for (LL i = 0; i < 10; i ++ )
        cout << count(b, i) - count(a - 1, i) << " ";
    cout << endl;
    return 0;
}

